package br.com.tenax.fornedor;

import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

import br.com.tenax.dao.FornecedorDAO;
import br.com.tenax.dao.FornecedorDAOHibernate;
import br.com.tenax.entity.Fornecedor;

@ManagedBean
@RequestScoped
public class FornecedorMB {

	private Fornecedor fornecedor = new Fornecedor();
		
	private FornecedorDAO dao = new FornecedorDAOHibernate();

	private Fornecedor fornecedorRetorno = new Fornecedor();

	private List<Fornecedor> lista = new ArrayList<>();

	private List<Fornecedor> autoComplete = new ArrayList<>();

	public FornecedorMB() {
		fornecedor = new Fornecedor();
		fornecedorRetorno = new Fornecedor();
	}
	public void atualizar() {
		dao.atualizar(fornecedor);
		fornecedorRetorno = fornecedor;
		listar();
	}

	public List<Fornecedor> completeFornecedor(String query) {
		List<Fornecedor> suggestions = new ArrayList<>();
		autoComplete = dao.listar();
		for (Fornecedor f : autoComplete) {
			if (f.getNome().startsWith(query))
				suggestions.add(f);
		}

		return suggestions;
	}

	public void consultar() {
		dao.consultar(fornecedorRetorno);
	}

	public void deletar() {
		dao.deletar(fornecedor);		
		listar();
	}

	public List<Fornecedor> getAutoComplete() {
		if (autoComplete == null) {
			autoComplete = dao.listar();
		}
		return autoComplete;
	}

	public FornecedorDAO getDao() {
		return dao;
	}

	public Fornecedor getFornecedor() {
		return fornecedor;
	}

	public Fornecedor getFornecedorRetorno() {
		return fornecedorRetorno;
	}

	public List<Fornecedor> getLista() {
		return lista;
	}

	public void listar() {
		lista = dao.listar();
		fornecedor = new Fornecedor();
	}

	public void salvar() {
		dao.incluir(fornecedor);
		listar();
	}

	public void setAutoComplete(List<Fornecedor> autoComplete) {
		this.autoComplete = autoComplete;
	}

	public void setDao(FornecedorDAO dao) {
		this.dao = dao;
	}

	public void setFornecedor(Fornecedor fornecedor) {
		this.fornecedor = fornecedor;
	}

	public void setFornecedorRetorno(Fornecedor fornecedorRetorno) {
		this.fornecedorRetorno = fornecedorRetorno;
	}

	public void setLista(List<Fornecedor> lista) {
		this.lista = lista;
	}
}